﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inventario_HardSoft.ADO;
using System.Windows.Forms;

namespace Inventario_HardSoft.Controlador
{
    class Ctrl_Prog
    {
        ConexionDataContext conexion;
        Contador conta;
        public Ctrl_Prog()
        {
            conexion = new ConexionDataContext();
            conta = new Contador();
        }
           
        internal void getList_Programas(DataGridView dg)
        {            
            List<PROGRAMA> lisusu = conexion.PROGRAMA.Where(x => x.ELIMINADO == 0).OrderBy(prog => prog.NOMBREPROGRAMA).ToList<PROGRAMA>();
            int i = 1;
            foreach (PROGRAMA p in lisusu)
            {
                object[] obj = new object[] { p.IDPROGRAMA, i.ToString(), p.NOMBREPROGRAMA, p.FECHAREGISTRO.GetValueOrDefault(DateTime.MinValue)};                
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }                        
        }
          
        internal DialogResult IngresarPrograma(Programa p, int p_2)
        {
            PROGRAMA prog;
            DialogResult result = DialogResult.Cancel;
            if (!this.verificar_NombrePrograma(p.nombreprograma)) //verificamos que no exista el programa que ha tipeado
            {
                //generamos el id para el usuario
                String numero = Convert.ToString(conta.getNumContador_IdPrograma());
                String numero2 = numero.Trim().PadLeft(4, '0');
                String idprograma = "PROG_" + numero2;
                //insertamos en la base de datos             
                prog = new PROGRAMA()
                {
                    IDPROGRAMA = idprograma,
                    NOMBREPROGRAMA = p.nombreprograma,
                    FECHAREGISTRO=p.fecha,
                    ELIMINADO = p.eliminado,
                };
                conexion.PROGRAMA.InsertOnSubmit(prog);
                conexion.SubmitChanges();
                conexion.increm_ContadorIdPrograma();
                result = DialogResult.OK;
            }
            else
            {
                result = DialogResult.Cancel;
            }
            return result;
        }

        private bool verificar_NombrePrograma(string nombProg)
        {
            bool value = conexion.PROGRAMA.Select(x => x.NOMBREPROGRAMA).Contains(nombProg);
            return value;
        } 

        internal void eliminarPrograma(string nombre)
        {
            PROGRAMA p = conexion.PROGRAMA.Single(x => x.NOMBREPROGRAMA == nombre);
            p.ELIMINADO = 1; 
            conexion.SubmitChanges();    
        } 

        internal void actualizaPrograma(string nombre, string idEq)
        {
            PROGRAMA p = conexion.PROGRAMA.Single(x => x.IDPROGRAMA == idEq);
            p.NOMBREPROGRAMA = nombre;
            conexion.SubmitChanges(); 
        }
    }        
}
